package editorsvg.css;

import editorsvg.editor.documento.ElementoSVG;

/**
 *
 * @author Jorge Berjano
 */
public class CondicionClass extends Condicion {
    
    private String nombreClase;
    private Condicion siguienteCondicion;
    
    public CondicionClass(String nombreClase, Condicion siguienteCondicion) {
        this.nombreClase = nombreClase;
    }
    
    @Override
    public String toString() {
        return "clase=" + nombreClase;
    }
    
    @Override
    public boolean evaluar(ElementoSVG elemento, Regla regla) {
        if (elemento.getClase() == null) {
            return false;
        }
        
        String[] clases = elemento.getClase().split("\\s+");
        boolean esDeLaClase = false;
        for (String clase : clases) {
            if (clase.equals(nombreClase)) {
                esDeLaClase = true;                        
                break;
            }
        }
        if (!esDeLaClase) {
            return false;
        }        
        if (siguienteCondicion == null) {
            if (regla != null) {
                regla.aplicarAsignaciones(elemento);
            }
            return true;
        }
        return siguienteCondicion.evaluar(elemento, regla);
    }

    @Override
    public int getEspecificidad() {       
        return 100 + (siguienteCondicion != null ? siguienteCondicion.getEspecificidad() : 0);
    }
}
